package com.yls.except.service;


import java.util.List;
import java.util.Map;

public interface UserService {

    /**
     * 微信登录
     * @param openid 三方唯一标志
     * @param nickname 昵称
     * @param sex 性别
     * @param head 头像
     * @param reqip
     * @param invitecode
     * @param realPath
     * @return 登录状态
     */
    Map<String, Object> insertUser(String openid, String nickname, String sex, String head, String reqip, String invitecode, String realPath);

    /**
     * 根据用户id查询用户个人资料
     * @param uid 用户id
     * @return 用户个人资料
     */
    Map<String,Object> selectUserInfoByUid(String uid);

    /**
     * 修改用户个人资料
     * @param uid 用户id
     * @param headimg 用户头像地址
     * @param nickname 昵称
     * @param sex 性别
     * @param birthday
     * @return 修改状态（大于0成功，否则失败）
     */
    int updateUserinfo(String uid, String headimg, String nickname, String sex, String birthday);

    /**
     * 获取验证码
     * @param phone 手机号码
     * @param type 类型（0：绑定手机号  1：设置密码）
     * @param uid 用户id
     * @param addip 添加ip
     * @return 绑定状态（大于0成功，否则失败）
     */
    int insertPhoneCode(String phone, String type, String uid, String addip);

    /**
     * 绑定手机号
     * @param uid 用户id
     * @param phone 手机号
     * @return 绑定状态（大于0成功，否则失败）
     */
    int updateBindingPhone(String uid, String phone);

    /**
     * 设置密码
     * @param uid 用户id
     * @param phone 手机号
     * @param pwd 密码
     * @return 设置状态（大于0成功，否则失败）
     */
    int updateUserPwd(String uid, String phone, String pwd);

    /**
     * 根据用户id查询代理信息
     * @param uid 用户id
     * @param page 页码
     * @return  代理信息
     */
    List<Object> selectInviteInfoByUid(String uid, String page);

    /**
     * 获取用户余额信息
     * @param uid 用户id
     * @return 用户余额信息
     */
    Map<String,Object> selectUserAccountByUid(String uid);

    /**
     * 根据用户id查询用户认证信息
     * @param uid 用户id
     * @return 用户认证信息
     */
    Map<String,Object> selectUserAuthInfoByUId(String uid);

    /**
     * 新增实名认真信息
     * @param uid 用户id
     * @param name 名字
     * @param card 身份证号
     * @param reqip 请求ip
     * @return
     */
    int insertUserAuth(String uid, String name, String card, String reqip);

    /**
     * 退出
     * @param uid 用户id
     * @param loginoutip 退出ip
     * @param type 退出类型（2：手动退出）
     * @return
     */
    int updateLoginOut(String uid, String loginoutip, int type);

    /**
     * 根据openid查询用户信息
     * @param opid openid
     * @param ipAddr
     * @param realPath
     * @return 用户信息
     */
    Map<String,Object> updateUserByOpenid(String opid, String ipAddr, String realPath);

    /**
     * 根据用户id查询代理信息
     * @param uid 用户id
     * @return 代理信息
     */
    Map<String,Object> selectUserProxyInfoByUId(String uid);
}
